.\" cf. groff_mdoc
.Dd March 25, 2015
.Os FreeTDS @VERSION@
.Dt FREEBCP 1
.Sh NAME
.Nm freebcp
.Nd bulk loading utility for Sybase and Microsoft databases
.Sh SYNOPSIS
.Nm
.Bo Bo Ao Ar database Ac Ns . Bc Ns Ao Ar owner Ac Ns . Bc Ns Aq Ar object_name
.Bro
.Ar in
|
.Ar [query] Ns Ar out
.Brc
.Ar datafile
.Bro
.Fl c
|
.Fl n
|
.Fl f Ar formatfile
.Brc
.Op Fl S Ar servername
.Op Fl D Ar dbname
.Op Fl U Ar username
.Op Fl P Ar password
.Op Fl b Ar batchsize
.Op Fl F Ar firstrow
.Op Fl L Ar lastrow
.Op Fl e Ar errfile
.Op Fl I Ar interfaces
.Op Fl m Ar maxerror
.Op Fl t Ar field_term
.Op Fl r Ar row_term
.Op Fl h Ar hints
.Op Fl T Ar textsize
.Op Fl A Ar packet_size
.Op Fl O Ar options
.Op Fl i Ar inputfile
.Op Fl o Ar outputfile
.Op Fl C Ar charset
.Op Fl EdVv
.\"
.Sh DESCRIPTION
.Nm
is a utility program distributed with FreeTDS.
.Nm
replicates (in part at least) the functionality
of the bcp utility programs distributed by Sybase and Microsoft.
.Nm
makes use of the DB-Library bcp API provided by FreeTDS. This
API is also available to application developers.
.Pp
The manual pages or online help for Sybase or SQL Server can be
referenced for more detailed information on bcp functionality.
.\"
.Sh TABLES\ AND\ FILES
.Bl -tag -width indent
.It Ar database
The name of the database containing object to be copied.  Optional if
the table/view is in the default database for 
.Ar username .
.It Ar schema
The schema of the object being copied. If not provided, the default schema
for 
.Ar username
is used.
.It Ar object
The name of the database object you wish to access, typically a
table. It can also be a view.  All views can be read; some can be
written, subject to constraints.  With
.Ar queryout Ns , Ar object
can also be an SQL query.
.It Ar in
Copy data from a host file to a database table.
.It Ar out
Copy data from a database table to a host file.
.It Ar queryout
indicates that
.Ar table_name
is in fact SQL, rather than a database object.
.Nm
will execute the query and write the results to a file. (It is a good
idea to have the query return one and only one result set.)
.It Ar datafile
The name of an operating system file.
.El
.\"
.Sh OPTIONS
.Bl -tag -width indent
.It Fl A Ar packet_size
Set the size of a TDS packet to packet_size.  Not sure why you would
want to do this, except as an experiment.
.It Fl D Ar dbname
The name of the default database to use.  Overrides default database associated with the login account.  Causes 
.Nm
to issue a 
.Ic USE Ar dbname 
command immediately after logging in, before commencing BCP operations. 
.It Fl E
Write the data in datafile to the table's IDENTITY column. Without
this flag, the identity data present in the datafile will be ignored,
and new IDENTITY values will be generated for the imported rows.
.It Fl F Ar firstrow
The first row to copy from the input file or database table. The
default is the first row, row 1.
.It Fl I Ar interfaces
The name and location of the
.Pa interfaces
file to search when connecting to servername. Overrides
.Pa freetds.conf.
.It Fl L Ar lastrow
The last row to copy from an input file  or
database table. The default is the last row.
.It Fl O Ar options
SQL text to set connection options prior to the bcp operation.  If
.Ar options
is a valid filename, the SQL is read from the file
instead. Sometimes needed for
.Ar queryout .
Example: 
.Li -O `SET QUOTED_IDENTIFIER ON' Ns .
.It Fl P Ar password
The password associated with 
.Ar username .
.It Fl S Ar servername
The name of the Database Server to which to connect.
.It Fl T Ar textsize
For text or image columns, set the maximum number of characters to
request from the server. Defaults to the setting in
.Pa freetds.conf .
If
not specified anywhere, defaults to the full size of the data.
.It Fl U Ar username
A database login name.  For TDS\ 7+ connections, a domain login is attempted
if 
.Ar username
is not provided. 
.It Fl b Ar batchsize
The number of rows per batch of data copied. Batching applies only
when you are bulk copying into the database. Each batch of data is
effectively 
.Dq committed
into the database. The default value for
.Ar batchsize
is 1000.
.It Fl c
The host data file is (or will be) in "character" format, i.e., a text
file. Encoding is determined by the client charset attribute in
.Pa freetds.conf .
.It Fl d
Turn off any logging. (Unintuitive, perhaps.)
.It Fl e Ar  errfile
Write errors to 
.Ar errfile . 
For uploads.  Includes line and column
information, and the row data.
.It Fl f Ar formatfile
The format of the host data file is described by
.Ar formatfile . 
The layout of 
.Ar formatfile
is identical to that understood by the Sybase and
Microsoft bcp utilities, but is too complicated to describe here.
.It Fl h Ar hints
Set bcp hints. For valid values, cf. 
.Fn bcp_options
in the FreeTDS Reference Manual.
.It Fl m Ar maxerror
Stop after encountering
.Ar maxerror
errors. Default 10.
.It Fl n
The host data file is in 
.Dq native
format.  This is a format that
.Nm
will be able to process, but is not portable or readable.
.It Fl r Ar row_term
The row terminator for a character file.  May be more than one
character.  Default is newline ('\\n'). Cf\&.
.Fl c Ns ,
above.
.It Fl t Ar field_term
The field terminator for character file. Also known as a column
delimiter. May be more than one character.  Default is tab
('\\t'). Cf\&.
.Fl c Ns
, above.
.It Fl v
.It Fl V
Print the version information and exit.
.It Fl i Ar inputfile
Read input data from file specified.
.It Fl o Ar outputfile
Write output data to file specified.
.It Fl C Ar charset
Specify character set to use to talk to server.
.El
.Sh ENVIRONMENT
.Ev DSQUERY
default 
.Ar servername
.\"
.Sh NOTES
When connecting to a Sybase database server, it is required that the
TDS 5.0 protocol be used. When connecting to a Microsoft SQL Server
2000 database server, the TDS\ 7 (or later) protocol is required.
.Pp
Sybase and Microsoft define different versions of the bcp portion of TDS 4.2.
Because FreeTDS has no way of knowing which type of server it's connected to,
.Nm
does not support version 4.2 of the TDS protocol.
.\"
.Sh HISTORY
.Nm
first appeared in FreeTDS 0.60
.Sh AUTHORS
The
.Nm
utility was written by
.An Bill Thompson Aq thompbil@exchange.uk.ml.com
.Sh BUGS
Currently, there is no support for text data types in
.Nm Ns , when
SQL Server 2000 is the target server.
